Global keyboard shortcuts management for web applications

ABSTRACT

According to one general aspect, a computer-implemented method for managing global keyboard shortcuts is described. The method determines a web application or a browser extension accessible for execution by a browser of a client device. A user interface including available shortcut actions for the web application or the browser extension is provided, and a designation of a keyboard shortcut for an action from the available shortcut actions is received via the user interface. An association is created between the designated keyboard shortcut, the action, and a user account. The designated keyboard shortcut, the action, and the association may be stored on a server, and the designated keyboard shortcut, the action, and the association may be synced based on the user account.

RELATED APPLICATIONS

This application is a continuation of U.S. Non-Provisional patentapplication Ser. No. 13/251,065, filed Sep. 30, 2011, entitled, “GLOBALKEYBOARD SHORTCUT MANAGEMENT FOR WEB APPLICATIONS,” which isincorporated by reference herein in its entirety.

TECHNICAL FIELD

This disclosure generally relates to managing global keyboard shortcutsfor software applications, and more particularly to designating andmanaging keyboard shortcuts for web browser applications and extensionsvia a user interface.

BACKGROUND

Keyboard shortcuts are often used for local applications, but may beuseful for applications executable in a web browser, or for browserextensions. By defining keyboard shortcuts for web applications andbrowser extensions, a user may invoke the keyboard shortcuts when usingany computing device (e.g., a smartphone, tablet, desktop, etc.), forexample when the data is stored and synced on a server.

Developers may wish to bind a keyboard shortcut to an action for a webapplication or browser extension. For example, a developer may wish toassign a key or a combination of keys such as CTRL-SHIFT-X to launch aweb application. Further, developers may have several actions withineach web application for which they wish to assign keyboard shortcuts.Yet, if developers of every web application could assign a globalkeyboard shortcut, there would be a huge amount of conflicts, and usercould get confused. Further, users may not agree with default keyboardshortcuts designated by certain developers. Accordingly, there exists aneed for a global user interface to allow users to assign and modifytheir own keyboard shortcuts to a variety of functions for webapplications and extensions.

SUMMARY

According to one general aspect, a computer-implemented method formanaging global keyboard shortcuts includes determining a webapplication or a browser extension accessible for execution by a browserof a client device. A user interface including available shortcutactions for the web application or the browser extension is provided,and a designation of a keyboard shortcut for an action from theavailable shortcut actions is received via the user interface. Anassociation is created between the designated keyboard shortcut, theaction, and a user account.

In some embodiments, the designated keyboard shortcut, the action, andthe association are stored on a server. The designated keyboardshortcut, the action, and the association may be synced based on theuser account. The available shortcut actions may be determined based oninformation received from a developer. The user interface may includesuggested keyboard shortcuts. The designated keyboard shortcut may bemodified based on user input. Input to invoke the designated keyboardshortcut may be received and the action may be implemented based on theinput. A user of the client computing device may be automaticallyprompted to input the designated keyboard shortcut. A determination maybe made that the web application or the browser extension is associatedwith the user account.

According to another general aspect, a computer-implemented method forassigning global keyboard shortcuts includes receiving, at server, adesignation of a keyboard shortcut for an action related to a webbrowser application. An association may be created at the server betweenthe designated keyboard shortcut, the action, and a user account, andthe association may be stored in a database at the server.

According to another general aspect, a tangible computer-readablestorage medium may have recorded and stored thereon instructions that,when executed by one or more processors of a computer system cause thecomputer system to determine a web application that is accessible forexecution by a browser on a client device. A user interface includingavailable shortcut actions for the web application may be provided. Thecomputer system may receive, via the user interface, a designation of akeyboard shortcut for an action from the available shortcut actions, andcreate an association between the designated keyboard shortcut, theaction, and a user account.

According to another general aspect, an apparatus includes instructionsstored on a computer-readable storage medium and executable by aprocessor to execute a browser application and thereby provide a browserinterface. The apparatus includes a user interface configured to displayshortcut management options for one or more applications executable bythe browser application and a management module configured to cause theprocessor to enable keyboard shortcut designations for the applicationsthrough the user interface in the browser application. In someembodiments, the designated keyboard shortcut, the action, and theassociation are synced based on the user account, such that theassociation between the designated keyboard shortcut, the action, andthe user account persists across a plurality of computing devices.

The details of one or more implementations are set forth in theaccompanying drawings and the description below. Other features will beapparent from the description and drawings, and from the claims.

BRIEF DESCRIPTION OF THE DRAWINGS

FIG. 1 is a block diagram of a system that can be used to assign globalkeyboard shortcuts.

FIG. 2 is a block diagram of a keyboard.

FIG. 3 illustrates a diagram of relationships between applications andshortcuts.

FIGS. 4A and 4B illustrate an exemplary user interfaces for managingglobal keyboard shortcuts.

FIG. 5 is a flowchart of a process for assigning global keyboardshortcuts.

FIG. 6 illustrates an example of a computer device and a mobile computerdevice that can be used to implement the techniques described here.

Like reference symbols in the various drawings indicate like elements.

DETAILED DESCRIPTION

Keyboard shortcuts may be used to invoke a software or operating systemoperation, and may serve as a way of invoking one or more commands thatmight otherwise be accessible only through a menu, a pointing device,different levels of a user interface, or via a command line interface.Some keyboard shortcuts allow a user to press a single key or a sequenceof keys one after the other to invoke the desired command. Otherkeyboard shortcuts may require pressing and holding several keyssimultaneously to invoke the desired command. Keyboard shortcutsgenerally expedite common operations by reducing input sequences to afew keystrokes or even a single keystroke. Each person may wish todefine and manage his own set of keyboard shortcuts and bindings betweenspecific keyboard shortcuts and specific commands.

A web browser executed by a client device can receive code (e.g., HTMLcode) from a remote server (e.g., a remote server that hosts a website)and can execute the receive code on the client device for the benefit ofa user of the client device.

In various embodiments, the web browser may include or be associatedwith one or more web applications. In this context, a “web application”may be configured to a single task or multiple tasks for a user. In suchan embodiment, the web application may be configured to be executed orinterpreted by the web browser. This is compared with the nativeapplications that include machine executable code and are configured tobe executed directly by a processor or via the operating system of theclient device, whereas, a web application may be incapable of executionor display without the aid of the web browser. Thus, web applicationscan be run inside a browser with a dedicated user interface, andtypically provide functionality and an experience that is more rich andinteractive than a standalone website but are less cumbersome andmonolithic than a desktop application. Examples of web applicationsinclude games, photo editors, and video players that are run inside thebrowser.

Web applications can be “hosted applications” or “packagedapplications.” Hosted applications may include at least a portion of aweb site that itself includes web pages, plus some metadata that may beespecially pertinent to the web application or to the user of the webapplication to allow the web application to perform some particularfunctionality for the user. Packaged applications can be thought of asweb applications whose code is bundled, so that the user can downloadall of the content of the web application for execution by the browser.A packaged web application may not need to have network access toperform its functionality for the user, and rather may be executedsuccessfully by the browser locally on the computing device withoutaccess to a network. Packaged web applications have the option of usingExtension APIs, allowing packaged applications to change the way thebrowser behaves or looks.

In various embodiments, the web browser may include or be configured tointeract with one or more browser extensions. In this context, a“browser extension” may include one or more web pages packaged orgrouped together as a definable whole, and configured to extend thefunctionality to the web browser. Thus, extensions also provide extrafunctionality to a browser, but generally, unlike web applications,there is little or no user interface component to the functionalityprovided by a browser extension. Instead, browser extensions extend thefunctionality of the browser and the websites being viewed in it. Forexample, browser extensions can extend the functionality of the browserby adding a new button to the address bar, such as an ever-presentcurrency converter. Buttons like this can also apply to the currentwebsite being viewed—for example, clicking the currency converter buttoncan convert all prices on the website presented to a user into acurrency chosen by the user. In another example, an extension can beinstalled so that when a user hovers a cursor over a thumbnail image ona webpage executed by a browser a larger-size version of the image isdisplayed until the user moves the cursor away from the image. Inanother example, an extension may be installed to embed a “mail this”button next to every link in every page. Compared to web applications,extensions cut across websites and web applications. Extensions may bein effect across all websites (though some are site-specific). Webapplications may not combine with other applications in this way.Rather, web applications generally run standalone, like any regularwebsite.

FIG. 1 is a block diagram of a system that can be used to manage globalkeyboard shortcuts. System 100 may include clients 110A and 110B,developers 130A and 130B, and server 140, which are interconnectedthrough a network 120.

Clients 110A and 110B may be a computer or a similar device that maydownload and execute software applications, assign keyboard shortcuts,and communicate with server 140. Client 110 may execute softwareapplications 111A, and may also view a global user interface 115A tomanage keyboard shortcuts for the software applications 111A. Using userinterface 115A, a user may, for example, assign shortcut keys to avariety of software applications 111A (e.g., web browser applications orextensions, which may also be known as “browser add-ins”) executing on abrowser on a display of client 110A. Client 111B may execute a differentset of software applications 111B, and may also view a global userinterface 115B to manage keyboard shortcuts for the softwareapplications 111B. User interfaces 115A and 115B may include a list ofbrowser extensions and current shortcuts leading to actions within thebrowser, such as a “print” action.

When a shortcut is invoked, an operating system of client 110A mayhandle the input event (e.g., a keyboard shortcut “CTRL-Q”) and forwardit to the active application, e.g., a browser executing on client 110A.Shortcuts may be handled by the browser and then sent to a renderer. Forexample, a user interface may include tabs whose content (i.e.,webpages) are drawn (rendered) by a renderer process, or “renderer.” Therenderer may be separate from the browser process for security purposes,and not something a user sees. Events such as key presses (e.g.,keyboard shortcuts) go to the browser process (which may be in theforeground), which in turn may send some or all of the events to therenderer process. If the renderer decides not to handle an event, therenderer may send the event back to the browser.

Unhandled shortcuts may come back to the browser for processing. Thebrowser may first handle shortcuts so that certain reserved shortcuts,which should not be handled by the web page, are taken care of. Forexample, window management functions that a web page should notinterfere with are handled by the browser. Additionally, a disabled webapplication or browser extension may not handle shortcuts.

Network 120 may be a single network or a combination of any type ofcomputer network, such as a Local Area Network (LAN) or a Wide AreaNetwork (WAN). In addition, network 120 may be a combination of public(e.g., Internet) and private networks.

Developer 130A is a client computer that is accessed by a softwaredeveloper of application “A” 135A. Developer 130B is a different clientcomputer accessed by a software developer of application “B” 135B.

As shown in FIG. 1, system 100 may also include server 140. Server 140may be a computer or a similar device that communicates with clients110A and 110B and developers 130A and 130B. In addition, server 140 mayinclude a database 145 to store global shortcut key designations forvarious web browser applications and extensions (e.g., applications135A, 135B) for each user. The global shortcut key designations may bestored (e.g., at database 145) individual for each user. The globalshortcut key designations may be designated via user interfaces 115A and115B, for example, as described in more detail below with respect toFIGS. 2 through 5.

FIG. 2 is a block diagram of a keyboard 210 that may be used by clients110A, 110B, or developers 130A, 130B. Clients 110A and 110B may use anycombination of keys on keyboard 210 to assign shortcuts to commands, orseries of commands, that can be performed within web applications orextensions, via global user interface 115A, for example. Different usersmay assign different shortcuts to the same applications at theirdiscretion. For example, Mark may wish to assign a shortcut CTRL-SHIFT-J(keys 215, 216, 217) to invoke a function within a spell-checking webapplication, whereas Mary may wish to assign the shortcut CRTL-Q (keys215, 218) to invoke the same function within the spell-checking webapplication, as discussed in more detail below with respect to FIG. 3.

One skilled in the art will understand that the depiction of keyboard210 is merely one illustrative example to which the disclosed subjectmatter is not limited. For example, keyboards with other visual layouts,multilingual keyboards, reduced-size keyboards, touchscreens, or inputdevices may be used by clients or developers to assign and invokeshortcuts.

FIG. 3 illustrates a diagram of relationships between applications andshortcuts. As shown in FIG. 3, users 310 and 330 may assign differentkeyboard shortcuts to actions for the same “NewsApp” application 320,for example when the application is installed (e.g., based on keycombinations suggested to a user during installation), or via a userinterface (e.g., user interface 115A) accessible to a user. An exemplaryuser interface for assigning and managing keyboard shortcuts to webapplications and browser extensions is described in more detail belowwith respect to FIGS. 4A and 4B.

For example, user 310, Mark, may assign “CTRL-J” (keyboard shortcut 311)to a start action 321 for application 320. Mark may also assign“CTRL-SHIFT-A” (keyboard shortcut 312) to alert action 322 withinapplication 320. Mary, however, may decide to assign ALT-E (keyboardshortcut 331) to alert action 322. Further, application 320 may havevarious other actions, such as develop action 323, for which no usersassign keyboard shortcuts.

A global user interface is needed to manage the shortcut assignmentsbecause so many users and developers may wish to assign differentkeyboard shortcuts to the many different actions that may be performedby thousands of different web applications and browser extensions. FIG.4A illustrates an exemplary user interface for managing global keyboardshortcuts. FIG. 4A includes user interface 410, which may be displayedby a browser application that is executed by a computing device (e.g.,client 110A shown in FIG. 1) that may be connected to a network (e.g.,the Internet, or network 120 shown in FIG. 1). User interface 410 maypresent available applications, such as NewsApp 412A, PhotoApp 412B,through App n, 412 n, which have been installed for execution on abrowser by a user, and which have keyboard shortcut actions available toassign or modify. User interface 410 may be launched independent of aparticular application.

An application (e.g., one of applications 412A, 412B, 412 n) may beselected by a user who wishes to assign keyboard shortcuts to functionsexecutable by the application. Upon selecting NewsApp 412A, for example,other options may be displayed in user interface 410, so that a user mayenter keyboard shortcuts for functions executable by NewsApp 412A, asdescribed in more detail below with respect to FIG. 4B.

One skilled in the art will recognize that the depiction of userinterface 410 and the arrangement of features in FIGS. 4A and 4B aremerely for illustration and may be modified. For example, user interface410 may display all the features depicted in FIGS. 4A and 4B at the sametime within a single window, or in separate windows, for example.

FIG. 4B illustrates another exemplary user interface for managing globalkeyboard shortcuts. FIG. 4B includes user interface 410, includingaction fields 420A, 420B, 420 n, which may include a list of actionsavailable for an application (e.g., NewsApp 412A). The actions may bespecified by developers of the applications, or in some embodiments,actions 420A, 420B, 420 n may be defined by users. Keyboard shortcutfields 430A, 430B, 430 n may include a list of potential keyboardshortcuts for each action. In certain embodiments, fields 430A, 430B,430 n may be empty for a user to fill in (as shown), or may include asuggested keyboard shortcut, for example a shortcut provided by adeveloper. User interface 410 may also include various other fields,such as submit button 440. In certain embodiments, after pressing submitbutton 440, data from user interface 410 may be transmitted via anetwork and stored in a database on a server, such as database 145 inserver 140 as shown in FIG. 1. The configuration of user interface 410and the fields and buttons shown in FIGS. 4A and 4B are merely forillustration, and fields may be added to, deleted, or modified. Forexample, user interface 410 may include another field that listsadditional web browser extensions downloaded by a user, for which theuser may assign keyboard shortcuts.

In another embodiment, an application may automatically prompt a userwith a minimal version of user interface 410 to make it easy for theuser to fill in a keyboard shortcut for a specific action. Theapplication may provide the user with a hint about what it suggests agood key might be for the action, but the user may easily modify thesuggested key.

In some embodiments, a developer of a web application or extension mayhave the ability to declare actions that can be bound to a key. Thedeveloper may make users aware of which actions are eligible forkeyboard shortcuts and may give the user an opportunity to bind theirown keyboard shortcut(s) to those action(s), for example using userinterface 410.

Access to user interface 410 may be provided in a variety of ways. Insome embodiments, user interface may appear after selection of anindicator within a web browser. In other embodiments, user interface maybe displayed when an options tab is selected from a menu of a webbrowser, for example.

Keyboard shortcut data may be synced across the web for a user, forexample using a user account and password. Therefore, user interface 410may be accessible to a user from any device, so that a user does notneed to worry about backing up keyboard shortcut assignments for her webapplications and web extensions. For example, Mary may login to her useraccount from her smartphone, tablet, or desktop computer, and may view alist of her applications (e.g., applications 412A, 412B, 412 n shown inFIG. 4A), as well as their associated actions and keyboard shortcuts,using any device. Further, a user may generate a list of keyboardshortcuts for sharing, downloading, or printing.

FIG. 5 is a flowchart of a process for managing global keyboardshortcuts. As shown in FIG. 5, a determination is made that a webapplication or browser extension (e.g., applications 111A shown inFIG. 1) is accessible for execution by a browser of a client computingdevice (e.g., client 110A shown in FIG. 1) (step 510). Thisdetermination may be made by server 140, shown in FIG. 1, for example. Auser interface (e.g., user interface 410 shown in FIG. 4) includingavailable shortcut actions for the web application or the browserextension is provided (step 520). A designation of a keyboard shortcutfor an action from the available shortcut actions is received via theuser interface (step 530). The input may be entered via, for example,keyboard 210. An association between the designated keyboard shortcut,the action, and a user account is created (step 540). In someembodiments, the association is stored in a database on a server, suchdatabase 145 shown in FIG. 1. In certain embodiments, a determinationmay be made whether the designated keyboard shortcut for the actionconflicts with a stored designation, in which case, the user interfacemay display a prompt for a user to make a different designation. Forexample, if the shortcut CTRL-K is already currently used by anotherfunction within an application, the user interface may display awarning.

The available shortcut actions may be based on information received fromdevelopers of browser extensions, such as developers 130A, 130B shown inFIG. 1. The designated keyboard shortcuts may be user-specific orclient-specific, such that other users or clients, such as client 110B,may make different keyboard shortcuts for the same applications (e.g.,applications 111B) executing at a client 110B. As explained above withrespect to FIG. 3, for example, Mark, user 310, may make differentkeyboard shortcuts for the same application (application 320) than Mary,user 330.

FIG. 6 illustrates an example of a computer device and a mobile computerdevice that can be used to implement the techniques described here.Computing device 600 is intended to represent various forms of digitalcomputers, such as laptops, desktops, workstations, personal digitalassistants, servers, blade servers, mainframes, and other appropriatecomputers. Computing device 650 is intended to represent various formsof mobile devices, such as personal digital assistants, cellulartelephones, smart phones, and other similar computing devices. Thecomponents shown here, their connections and relationships, and theirfunctions, are meant to be exemplary only, and are not meant to limitimplementations of the inventions described and/or claimed in thisdocument.

Computing device 600 includes a processor 602, memory 604, a storagedevice 606, a high-speed interface 608 connecting to memory 604 andhigh-speed expansion ports 610, and a low speed interface 612 connectingto low speed bus 614 and storage device 606. Each of the components 602,604, 606, 608, 610, and 612, are interconnected using various busses,and may be mounted on a common motherboard or in other manners asappropriate. The processor 602 can process instructions for executionwithin the computing device 600, including instructions stored in thememory 604 or on the storage device 606 to display graphical informationfor a GUI on an external input/output device, such as display 616coupled to high speed interface 608. In other implementations, multipleprocessors and/or multiple buses may be used, as appropriate, along withmultiple memories and types of memory. Also, multiple computing devicesmay be connected, with each device providing portions of the necessaryoperations (e.g., as a server bank, a group of blade servers, or amulti-processor system).

The memory 604 stores information within the computing device 600. Inone implementation, the memory 604 is a volatile memory unit or units.In another implementation, the memory 604 is a non-volatile memory unitor units. The memory 604 may also be another form of computer-readablemedium, such as a magnetic or optical disk.

The storage device 606 is capable of providing mass storage for thecomputing device 600. In one implementation, the storage device 606 maybe or contain a computer-readable medium, such as a floppy disk device,a hard disk device, an optical disk device, or a tape device, a flashmemory or other similar solid state memory device, or an array ofdevices, including devices in a storage area network or otherconfigurations. A computer program product can be tangibly embodied inan information carrier. The computer program product may also containinstructions that, when executed, perform one or more methods, such asthose described above. The information carrier is a computer- ormachine-readable medium, such as the memory 604, the storage device 606,or memory on processor 602.

The high speed controller 608 manages bandwidth-intensive operations forthe computing device 600, while the low speed controller 612 manageslower bandwidth-intensive operations. Such allocation of functions isexemplary only. In one implementation, the high-speed controller 608 iscoupled to memory 604, display 616 (e.g., through a graphics processoror accelerator), and to high-speed expansion ports 610, which may acceptvarious expansion cards (not shown). In the implementation, low-speedcontroller 612 is coupled to storage device 606 and low-speed expansionport 614. The low-speed expansion port, which may include variouscommunication ports (e.g., USB, Bluetooth, Ethernet, wireless Ethernet)may be coupled to one or more input/output devices, such as a keyboard,a pointing device, a scanner, or a networking device such as a switch orrouter, e.g., through a network adapter.

The computing device 600 may be implemented in a number of differentforms, as shown in the figure. For example, it may be implemented as astandard server 620, or multiple times in a group of such servers. Itmay also be implemented as part of a rack server system 624. Inaddition, it may be implemented in a personal computer such as a laptopcomputer 622. Alternatively, components from computing device 600 may becombined with other components in a mobile device (not shown), such asdevice 650. Each of such devices may contain one or more of computingdevice 600, 650, and an entire system may be made up of multiplecomputing devices communicating with each other.

Computing device 650 includes a processor 652, memory 664, aninput/output device such as a display 654, a communication interface666, and a transceiver 668, among other components. The device 650 mayalso be provided with a storage device, such as a microdrive or otherdevice, to provide additional storage. Each of the components 650, 652,664, 654, 666, and 668, are interconnected using various buses, andseveral of the components may be mounted on a common motherboard or inother manners as appropriate.

The processor 652 can execute instructions within the computing device650, including instructions stored in the memory 664. The processor maybe implemented as a chipset of chips that include separate and multipleanalog and digital processors. The processor may provide, for example,for coordination of the other components of the device 650, such ascontrol of user interfaces, applications run by device 650, and wirelesscommunication by device 650.

Processor 652 may communicate with a user through control interface 658and display interface 656 coupled to a display 654. The display 654 maybe, for example, a TFT LCD (Thin-Film-Transistor Liquid Crystal Display)or an OLED (Organic Light Emitting Diode) display, or other appropriatedisplay technology. The display interface 656 may comprise appropriatecircuitry for driving the display 654 to present graphical and otherinformation to a user. The control interface 658 may receive commandsfrom a user and convert them for submission to the processor 652. Inaddition, an external interface 662 may be provided in communicationwith processor 652, so as to enable near area communication of device650 with other devices. External interface 662 may provide, for example,for wired communication in some implementations, or for wirelesscommunication in other implementations, and multiple interfaces may alsobe used.

The memory 664 stores information within the computing device 650. Thememory 664 can be implemented as one or more of a computer-readablemedium or media, a volatile memory unit or units, or a non-volatilememory unit or units. Expansion memory 674 may also be provided andconnected to device 650 through expansion interface 672, which mayinclude, for example, a SIMM (Single In Line Memory Module) cardinterface. Such expansion memory 674 may provide extra storage space fordevice 650, or may also store applications or other information fordevice 650. Specifically, expansion memory 674 may include instructionsto carry out or supplement the processes described above, and mayinclude secure information also. Thus, for example, expansion memory 674may be provided as a security module for device 650, and may beprogrammed with instructions that permit secure use of device 650. Inaddition, secure applications may be provided via the SIMM cards, alongwith additional information, such as placing identifying information onthe SIMM card in a non-hackable manner.

The memory may include, for example, flash memory and/or NVRAM memory,as discussed below. In one implementation, a computer program product istangibly embodied in an information carrier. The computer programproduct contains instructions that, when executed, perform one or moremethods, such as those described above. The information carrier is acomputer- or machine-readable medium, such as the memory 664, expansionmemory 674, or memory on processor 652, that may be received, forexample, over transceiver 668 or external interface 662.

Device 650 may communicate wirelessly through communication interface666, which may include digital signal processing circuitry wherenecessary. Communication interface 666 may provide for communicationsunder various modes or protocols, such as GSM voice calls, SMS, EMS, orMMS messaging, CDMA, TDMA, PDC, WCDMA, CDMA2000, or GPRS, among others.Such communication may occur, for example, through radio-frequencytransceiver 668. In addition, short-range communication may occur, suchas using a Bluetooth, WiFi, or other such transceiver (not shown). Inaddition, GPS (Global Positioning System) receiver module 670 mayprovide additional navigation- and location-related wireless data todevice 650, which may be used as appropriate by applications running ondevice 650.

Device 650 may also communicate audibly using audio codec 660, which mayreceive spoken information from a user and convert it to usable digitalinformation. Audio codec 660 may likewise generate audible sound for auser, such as through a speaker, e.g., in a handset of device 650. Suchsound may include sound from voice telephone calls, may include recordedsound (e.g., voice messages, music files, etc.) and may also includesound generated by applications operating on device 650.

The computing device 650 may be implemented in a number of differentforms, as shown in the figure. For example, it may be implemented as acellular telephone 680. It may also be implemented as part of a smartphone 682, personal digital assistant, or other similar mobile device.

Various implementations of the systems and techniques described here canbe realized in digital electronic circuitry, integrated circuitry,specially designed ASICs (application specific integrated circuits),computer hardware, firmware, software, and/or combinations thereof.These various implementations can include implementation in one or morecomputer programs that are executable and/or interpretable on aprogrammable system including at least one programmable processor, whichmay be special or general purpose, coupled to receive data andinstructions from, and to transmit data and instructions to, a storagesystem, at least one input device, and at least one output device.

These computer programs (also known as programs, software, softwareapplications or code) include machine instructions for a programmableprocessor, and can be implemented in a high-level procedural and/orobject-oriented programming language, and/or in assembly/machinelanguage. As used herein, the terms “machine-readable medium”“computer-readable medium” refers to any computer program product,apparatus and/or device (e.g., magnetic discs, optical disks, memory,Programmable Logic Devices (PLDs)) used to provide machine instructionsand/or data to a programmable processor, including a machine-readablemedium that receives machine instructions as a machine-readable signal.The term “machine-readable signal” refers to any signal used to providemachine instructions and/or data to a programmable processor.

To provide for interaction with a user, the systems and techniquesdescribed here can be implemented on a computer having a display device(e.g., a CRT (cathode ray tube) or LCD (liquid crystal display) monitor)for displaying information to the user and a keyboard and a pointingdevice (e.g., a mouse or a trackball) by which the user can provideinput to the computer. Other kinds of devices can be used to provide forinteraction with a user as well; for example, feedback provided to theuser can be any form of sensory feedback (e.g., visual feedback,auditory feedback, or tactile feedback); and input from the user can bereceived in any form, including acoustic, speech, or tactile input.

The systems and techniques described here can be implemented in acomputing system that includes a back end component (e.g., as a dataserver), or that includes a middleware component (e.g., an applicationserver), or that includes a front end component (e.g., a client computerhaving a graphical user interface or a Web browser through which a usercan interact with an implementation of the systems and techniquesdescribed here), or any combination of such back end, middleware, orfront end components. The components of the system can be interconnectedby any form or medium of digital data communication (e.g., acommunication network). Examples of communication networks include alocal area network (“LAN”), a wide area network (“WAN”), and theInternet.

The computing system can include clients and servers. A client andserver are generally remote from each other and typically interactthrough a communication network. The relationship of client and serverarises by virtue of computer programs running on the respectivecomputers and having a client-server relationship to each other.

A number of embodiments have been described. Nevertheless, it will beunderstood that various modifications may be made without departing fromthe spirit and scope of the invention.

In addition, the logic flows depicted in the figures do not require theparticular order shown, or sequential order, to achieve desirableresults. In addition, other steps may be provided, or steps may beeliminated, from the described flows, and other components may be addedto, or removed from, the described systems. Accordingly, otherembodiments are within the scope of the following claims.

What is claimed is:
 1. A computer-implemented method for managing globalkeyboard shortcuts, comprising: determining a plurality of webapplications or browser extensions accessible for execution by a browserof a client device, the plurality of web applications or browserextensions each including at least one web page; providing a userinterface including available shortcut actions for the plurality of webapplications or browser extensions, the user interface configured toallow assignment of keyboard shortcuts for the available shortcutactions for each of the plurality of web applications or browserextensions; receiving, via the user interface, a designation of akeyboard shortcut for an action from the available shortcut actions;creating an association between the designated keyboard shortcut, theaction, and a user account; and automatically prompting, by one of theplurality of web applications or browser extensions, an input via theuser interface of the designated keyboard shortcut during installationof the one of the plurality of web applications or browser extensionsfor execution by the browser.
 2. The computer-implemented method ofclaim 1, wherein the designated keyboard shortcut, the action, and theassociation are stored on a server.
 3. The computer-implemented methodof claim 2, wherein the designated keyboard shortcut, the action, andthe association are synced based on the user account.
 4. Thecomputer-implemented method of claim 1, wherein the available shortcutactions are determined based on information received from a developer.5. The computer-implemented method of claim 1, wherein the userinterface includes suggested keyboard shortcuts.
 6. Thecomputer-implemented method of claim 1, further comprising: modifyingthe designated keyboard shortcut based on user input.
 7. Thecomputer-implemented method of claim 1, further comprising: receiving adesignated input to invoke the designated keyboard shortcut; andimplementing the action based on the designated input.
 8. Thecomputer-implemented method of claim 1, further comprising: determiningthe plurality of web applications or browser extensions are associatedwith the user account.
 9. A computer-implemented method for assigningglobal keyboard shortcuts, comprising: providing a user interfaceconfigured to allow assignment of keyboard shortcuts for availableshortcut actions for each of a plurality of web applications or browserextensions installed for execution by a browser; receiving, at a server,a designation of a keyboard shortcut for an action related to a functionof a web application, wherein the web application is one of theplurality of web applications installed for the execution by thebrowser, and wherein the web application includes at least one web page;creating, at the server, an association between the designated keyboardshortcut, the action, and a user account; storing, the association in adatabase at the server; and automatically prompting, by the webapplication, an input via the user interface of the designated keyboardshortcut during installation of the web application for execution by thebrowser.
 10. A non-transitory computer-readable storage medium havingrecorded and stored thereon instructions that, when executed by one ormore processors of a computer system cause the computer system to:determine a plurality of web applications accessible for execution by abrowser on a client device, the plurality of web applications eachincluding at least one web page; provide a user interface includingavailable shortcut actions for the plurality of web applications, theuser interface configured to allow assignment of keyboard shortcuts forthe available shortcut actions for each of the plurality of webapplications; receive, via the user interface, a designation of akeyboard shortcut for an action from the available shortcut actions;create an association between the designated keyboard shortcut, theaction, and a user account; and automatically prompt, by one of theplurality of web applications, an input via the user interface of thedesignated keyboard shortcut during installation of the one of theplurality of web applications for execution by the browser.
 11. Thenon-transitory computer-readable storage medium of claim 10, wherein theavailable shortcut actions are determined based on information receivedfrom a developer of a web application.
 12. The non-transitorycomputer-readable storage medium of claim 10, wherein the user interfaceincludes suggested keyboard shortcuts.
 13. The non-transitorycomputer-readable storage medium of claim 10, wherein the instructionsfurther cause the computer system to: enable modification of thedesignated keyboard shortcut.
 14. The non-transitory computer-readablestorage medium of claim 10, wherein the instructions further cause thecomputer system to: receive, via a network, input to invoke thedesignated keyboard shortcut; and implement the action based on theinput.
 15. The non-transitory computer-readable storage medium of claim10, wherein the instructions further cause the computer system to: storethe association in a database of a server.
 16. A system includinginstructions stored on a non-transitory computer-readable storage mediumand executable by a processor to execute a browser application andthereby provide a browser interface, the system comprising: a userinterface configured to display shortcut management options to allowassignment of keyboard shortcuts for available shortcut actions for eachof a plurality of web applications, the plurality of web applicationsbeing executable by the browser application and including at least oneweb page; and a management module configured to cause the processor toenable keyboard shortcut designations for the plurality of webapplications through the user interface in the browser application, andautomatically prompt, by one of the plurality of web applications, auser to input via the user interface of a designated keyboard shortcutfor one of the available shortcut actions, during installation of theone of the plurality of web applications for execution by the browserapplication.
 17. The system of claim 16 wherein the management module isconfigured to determine shortcut actions available for the plurality ofweb applications.
 18. The system of claim 16, wherein the keyboardshortcut designations are assigned to shortcut actions previouslydefined by a developer of at least one of the plurality of webapplications.
 19. The system of claim 16, wherein the shortcutmanagement options include suggested keyboard shortcuts.
 20. The systemof claim 16, wherein the management module is configured to enable anoption to modify the keyboard shortcut designations.
 21. The system ofclaim 16, wherein the plurality of web applications are associated witha user account.
 22. The system of claim 16, wherein the designatedkeyboard shortcut, an action, and an association between the designatedkeyboard shortcut, the action, and a user account are stored on aserver.
 23. The system of claim 22, wherein the designated keyboardshortcut, the action, and the association are synced based on the useraccount, such that the association between the designated keyboardshortcut, the action, and the user account persists across a pluralityof computing devices.